package cn.hospital.service;

import cn.hospital.entity.*;

import javax.servlet.http.HttpSession;
import java.util.List;
import java.util.Map;

public interface PatientInformationSheetService {
    /**
     * 根据条件查询病人数量
     * @param map
     * @return
     */
    Long selectByMapCount(Map<String, Object> map, HttpSession session);

    /**
     * 根据条件查询病人数量，展示单个查询信息时
     *
     * @param queryConditionsId
     * @return
     */
    Long selectByMapCount(String queryConditionsId);

    /**
     * 查询随访管理系统，查询单个患者信息
     * @param patientId
     * @return
     */
    List<PatientInformationSheet> selectPatientSignsAnemiaFoDiagnosis(Integer patientId);

    /**
     * 患者详细页面中的保存按钮
     *
     * @param patientInformationSheet
     * @param record
     * @param anemia
     * @return
     */
    Integer savePatientInformationSheet(PatientInformationSheet patientInformationSheet, SignsOfBlood record, Anemia anemia);


    /**
     * 根据科室查询模板
     *
     * @param httpSession
     * @return
     */
    List<Template> selectTemplatem(HttpSession httpSession);

    /**
     * 添加病人模板信息
     *
     * @param ward
     * @param patientInformationSheet
     * @param score
     * @param certificate
     * @param patientsFamily
     * @param diagnosis
     * @param operationInformationSheet
     * @param bloodTransfusionRecord
     * @param medicalInformation
     * @param signsOfBlood
     * @param anemia
     * @param chestImaging
     * @param medicalHistory
     * @param pulmonaryMetastasis
     * @param liverMetastasis
     * @param otherTransfer
     * @param lymphNodeMetastasis
     * @param brainMetastases
     * @param boneMetastases
     * @param tumorMarker
     * @return
     */
    Integer insertTemplatemPatientInformationSheet(Ward ward, String provinceCode1, String cityCode1,
                                                   String countyCode1, String gates1, String provinceCode2,
                                                   String cityCode2, String countyCode2, String gates2,
                                                   PatientInformationSheet patientInformationSheet,
                                                   Score score, Certificate certificate, PatientsFamily patientsFamily,
                                                   Diagnosis diagnosis, OperationInformationSheet operationInformationSheet,
                                                   BloodTransfusionRecord bloodTransfusionRecord,
                                                   MedicalInformation medicalInformation, SignsOfBlood signsOfBlood,
                                                   Anemia anemia, ChestImaging chestImaging, MedicalHistory medicalHistory,
                                                   PulmonaryMetastasis pulmonaryMetastasis, AnesthesiaInformation anesthesiaInformation,
                                                   LiverMetastasis liverMetastasis,
                                                   OtherTransfer otherTransfer,
                                                   LymphNodeMetastasis lymphNodeMetastasis,
                                                   BrainMetastases brainMetastases,
                                                   BoneMetastases boneMetastases,
                                                   TumorMarker tumorMarker,HttpSession session);


    /**
     * 根据条件,查询患者数量
     * @param map
     * @return
     */
    Long selectByMapCount(Map<String, Object> map);

    /**
     * 根据条件，查询患者数据
     * @param map
     * @return
     */
    List<PatientInformationSheet> selectByMap(Map<String,Object> map);
}
